<template>
  <div id="app">
    <h2>测试题</h2>
    <!-- 在Vue中直接给数组的索引赋值，不是响应式的，不会驱动视图更新 -->
    <SubjectItem v-for="v of 5" :key="v" @submit="onSubmit(v - 1, $event)"></SubjectItem>
    <div>
      <!-- 接收两个属性，序号（no）、结果（result） -->
      <FlagItem v-for="v of 5" :key="v" :no="v" :result="results[v - 1]"></FlagItem>
    </div>
  </div>
</template>

<script>
import SubjectItem from '@/components/SubjectItem.vue'
import FlagItem from '@/components/FlagItem.vue'
export default {
  name: 'App',
  components: {
    SubjectItem,
    FlagItem
  },
  data() {
    return {
      results: ['未完成', '未完成', '未完成', '未完成', '未完成'] // 用来维护结果列表
    }
  },
  methods: {
    onSubmit(i, textResult) {
      // 在Vue中直接给数组的索引赋值，不是响应式的，不会驱动视图更新（Vue2的缺陷）
      // this.results[i] = textResult

      // 需要调用数组的变异方法才会驱动视图更新，变异方法：调用完后会影响原数组的方法
      // 数组.splice(删除的起始下标, 删除的个数, 插入的新元素1, 新元素2, ...)
      this.results.splice(i, 1, textResult)
    }
  }
};
</script>

<style>
body {
  background-color: #eee;
}

#app {
  background-color: #fff;
  width: 500px;
  margin: 50px auto;
  box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.5);
  padding: 2em;
}
</style>